const path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    //打包模式
    //生产模式 production（代码被压缩）
    mode: 'production',

    devtool: 'inline-source-map',
    //入口
    entry: path.resolve(__dirname, './src/index.js'),
    //出口
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: 'app.js'
    },
    //插件
    plugins: [
        new htmlWebpackPlugin({
            template: path.resolve(__dirname, './public/index.html')
        })
    ],
    // 模块加载器
    module: {
        // 匹配规则(数组)
        rules: [
            // 处理 css 的
            {
                test: /\.css$/i, // 通过正则匹配后缀名
                use: ['style-loader', 'css-loader'] // 加载器是从后往前处理
            },
            // 处理 less 的
            {
                test: /\.less$/i,
                use: ['style-loader', 'css-loader', 'less-loader']
            },
            // 处理图片资源 webpack5
            {
                test: /\.(png|svg|jpg|jpeg|gif)$/i,
                type: 'asset',
                generator: {
                    // [hash]   文件唯一标识
                    // [ext]    文件后缀名
                    filename: 'assets/[hash][ext]'
                }
            },
            {
                test: /\.m?js$/i, // 匹配js文件
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            },
        ]
    }
}
